home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / gui / DesignerV1_53.lha / Designer / ToggleDemo / ToggleDemo.pas < prev    next >
Pascal/Delphi Source File  |  1995-04-28  |  5KB  |  111 lines

  1. Program ToggleDemo;
  2.  
  3. {*****************************************************}
  4. {*                                                   *}
  5. {*   This demo shows how to use Boolean type gadgets *}
  6. {*  to create mutually exclusive gadgets.            *}
  7. {*   When a Gadget is pressed it must de-select the  *}
  8. {*  other Gadgets and select itself.                 *}
  9. {*                                                   *}
  10. {*****************************************************}
  11.  
  12. Uses exec,intuition,gadtools,graphics,amiga,diskfont,
  13.      workbench,utility,toggledemowin;
  14.  
  15. const
  16.   FirstGad  : string = 'First Option'#0;
  17.   SecondGad : string = 'Second Option'#0;
  18.   ThirdGad  : string = 'Third Option'#0;
  19. var
  20.   done      : boolean;
  21.   class     : long;
  22.   code      : word;
  23.   pimsg     : pintuimessage;
  24.   dummy     : long;
  25.   pgsel     : pgadget;
  26.   gadnumber : word;
  27. begin
  28.   if openlibs then
  29.     begin
  30.       if makeimages then
  31.         begin
  32.           if openwindowmainwindow then
  33.             begin
  34.               done:=false;
  35.               repeat
  36.                 dummy:=wait(bitmask(mainwindow^.userport^.mp_sigbit));
  37.                 pimsg:=gt_getimsg(mainwindow^.userport);
  38.                 while(pimsg<>nil) do
  39.                   begin
  40.                     class:=pimsg^.class;
  41.                     code:=pimsg^.code;
  42.                     pgsel:=pgadget(pimsg^.iaddress);  { do not reference unless gadgetup or gadgetdown }
  43.                     gt_replyimsg(pimsg);
  44.                     gadnumber:=99;
  45.                     case class of
  46.                       idcmp_closewindow : 
  47.                         done:=true;
  48.                       idcmp_vanillakey :
  49.                         case upcase(chr(code)) of
  50.                           'F' : gadnumber:=FirstGadget;
  51.                           'S' : gadnumber:=SecondGadget;
  52.                           'T' : gadnumber:=ThirdGadget;
  53.                          end;
  54.                       idcmp_gadgetdown :
  55.                         gadnumber:=pgsel^.gadgetid;
  56.                      end;
  57.                     case gadnumber of
  58.                       FirstGadget :
  59.                         begin
  60.                           {* Remove gadgets from window *}
  61.                           dummy:=RemoveGList(mainwindow,mainwindowglist,~0);
  62.                           {* Change Gadget Flags *}
  63.                           mainwindowgads[FirstGadget]^.Flags:=mainwindowgads[FirstGadget]^.Flags or GFLG_Selected;
  64.                           mainwindowgads[SecondGadget]^.Flags:=mainwindowgads[SecondGadget]^.Flags and ~GFLG_Selected;
  65.                           mainwindowgads[ThirdGadget]^.Flags:=mainwindowgads[ThirdGadget]^.Flags and ~GFLG_Selected;
  66.                           {* Put Gadgets Back in window *}
  67.                           dummy:=AddGList(mainwindow,mainwindowglist,dummy,~0,nil);
  68.                           {* Refresh Gadgets *}
  69.                           RefreshGList(MainWindowGList,MainWindow,nil,~0);
  70.                           gt_setsinglegadgetattr(mainwindowgads[DisplayGadget],mainwindow,
  71.                                                  GTTX_Text,long(@FirstGad[1]));
  72.                         end;
  73.                       SecondGadget :
  74.                         begin
  75.                           dummy:=RemoveGList(mainwindow,mainwindowglist,~0);
  76.                           mainwindowgads[FirstGadget]^.Flags:=mainwindowgads[FirstGadget]^.Flags and ~GFLG_Selected;
  77.                           mainwindowgads[SecondGadget]^.Flags:=mainwindowgads[SecondGadget]^.Flags or GFLG_Selected;
  78.                           mainwindowgads[ThirdGadget]^.Flags:=mainwindowgads[ThirdGadget]^.Flags and ~GFLG_Selected;
  79.                           dummy:=AddGList(mainwindow,mainwindowglist,dummy,~0,nil);
  80.                           RefreshGList(mainwindowglist,mainwindow,nil,~0);
  81.                           gt_setsinglegadgetattr(mainwindowgads[DisplayGadget],mainwindow,
  82.                                                  GTTX_Text,long(@SecondGad[1]));
  83.                         end;
  84.                       ThirdGadget :
  85.                         begin
  86.                           dummy:=RemoveGList(mainwindow,mainwindowglist,~0);
  87.                           mainwindowgads[FirstGadget]^.Flags:=mainwindowgads[FirstGadget]^.Flags and ~GFLG_Selected;
  88.                           mainwindowgads[SecondGadget]^.Flags:=mainwindowgads[SecondGadget]^.Flags and ~GFLG_Selected;
  89.                           mainwindowgads[ThirdGadget]^.Flags:=mainwindowgads[ThirdGadget]^.Flags or GFLG_Selected;
  90.                           dummy:=AddGList(mainwindow,mainwindowglist,dummy,~0,nil);
  91.                           RefreshGList(mainwindowglist,mainwindow,nil,~0);
  92.                           gt_setsinglegadgetattr(mainwindowgads[DisplayGadget],mainwindow,
  93.                                                  GTTX_Text,long(@ThirdGad[1]));
  94.                         end;
  95.                      end;
  96.                     pimsg:=gt_getimsg(mainwindow^.userport);
  97.                   end;
  98.               until done;
  99.               closewindowmainwindow;
  100.             end
  101.            else
  102.             writeln('Could not open window.');
  103.           Freeimages;
  104.         end
  105.        else
  106.         writeln('Unable to make images.');
  107.       closelibs;
  108.     end
  109.    else
  110.     writeln('Could not open libraries.');
  111. end.